/* SPDX-License-Identifier: MIT
 *
 * Permission is hereby granted, free of charge, to any person
 * obtaining a copy of this software and associated documentation
 * files (the "Software"), to deal in the Software without
 * restriction, including without limitation the rights to use, copy,
 * modify, merge, publish, distribute, sublicense, and/or sell copies
 * of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 *
 * Copyright:
 *   2020      Evan Nemerson <evan@nemerson.com>
 *   2020      Christopher Moore <moore@free.fr>
 */

#define SIMDE_TEST_X86_AVX512_INSN cmpgt

#include <test/x86/avx512/test-avx512.h>
#include <simde/x86/avx512/set.h>
#include <simde/x86/avx512/cmpgt.h>

static int
test_simde_mm512_cmpgt_epi8_mask(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m512i   a;
    simde__m512i   b;
    simde__mmask64 r;
  } test_vec[8] = {
    { simde_mm512_set_epi8(INT8_C(  92), INT8_C(-121), INT8_C( 120), INT8_C( -19),
                           INT8_C( -73), INT8_C(  22), INT8_C( -66), INT8_C( -29),
                           INT8_C(  55), INT8_C( -63), INT8_C( -45), INT8_C(-119),
                           INT8_C(  30), INT8_C( -29), INT8_C( -26), INT8_C(  89),
                           INT8_C( -13), INT8_C( 119), INT8_C( -88), INT8_C( 109),
                           INT8_C(  68), INT8_C( -10), INT8_C(   0), INT8_C( -18),
                           INT8_C(   1), INT8_C( 116), INT8_C( -13), INT8_C( -73),
                           INT8_C(-122), INT8_C(   0), INT8_C( 111), INT8_C(  95),
                           INT8_C( -20), INT8_C(   3), INT8_C( 122), INT8_C( -43),
                           INT8_C(  13), INT8_C(  25), INT8_C( -35), INT8_C(-127),
                           INT8_C(  82), INT8_C(  90), INT8_C(  53), INT8_C( 123),
                           INT8_C(  73), INT8_C( 108), INT8_C( -18), INT8_C(  15),
                           INT8_C( 115), INT8_C(  54), INT8_C( 102), INT8_C( 118),
                           INT8_C(  39), INT8_C( -77), INT8_C(  45), INT8_C(  81),
                           INT8_C( -17), INT8_C( -28), INT8_C(  67), INT8_C( -85),
                           INT8_C(  79), INT8_C(-113), INT8_C(-122), INT8_C( 124)),
      simde_mm512_set_epi8(INT8_C(   9), INT8_C(-121), INT8_C( 120), INT8_C( -36),
                           INT8_C(  36), INT8_C(-103), INT8_C(-104), INT8_C(  25),
                           INT8_C(-111), INT8_C( -63), INT8_C( -35), INT8_C(-120),
                           INT8_C(  28), INT8_C( -44), INT8_C( -26), INT8_C( -86),
                           INT8_C( -13), INT8_C(  53), INT8_C( -88), INT8_C(-107),
                           INT8_C(  68), INT8_C(  42), INT8_C(-118), INT8_C( 111),
                           INT8_C(  54), INT8_C( -58), INT8_C( -13), INT8_C(  27),
                           INT8_C(  23), INT8_C(  41), INT8_C(-119), INT8_C(  44),
                           INT8_C(   7), INT8_C(-120), INT8_C(  32), INT8_C( -43),
                           INT8_C( 114), INT8_C( -72), INT8_C(  73), INT8_C( -96),
                           INT8_C(  96), INT8_C( 110), INT8_C( -81), INT8_C( -76),
                           INT8_C( 103), INT8_C(-100), INT8_C( -22), INT8_C(  18),
                           INT8_C( 115), INT8_C(  54), INT8_C( -40), INT8_C( 125),
                           INT8_C( 110), INT8_C(  31), INT8_C(  51), INT8_C(-104),
                           INT8_C(-115), INT8_C( -27), INT8_C(  62), INT8_C( -85),
                           INT8_C(  49), INT8_C(-115), INT8_C(  38), INT8_C(   4)),
      UINT64_C(0x969d5243643621ad) },
    { simde_mm512_set_epi8(INT8_C(  16), INT8_C(  41), INT8_C( 102), INT8_C( -95),
                           INT8_C(  17), INT8_C(  42), INT8_C( -86), INT8_C(  38),
                           INT8_C(  62), INT8_C( -56), INT8_C(  60), INT8_C(  19),
                           INT8_C(-100), INT8_C(-107), INT8_C( 105), INT8_C( -76),
                           INT8_C(  10), INT8_C(  -9), INT8_C( -12), INT8_C( -56),
                           INT8_C( -71), INT8_C(  96), INT8_C(  31), INT8_C(  24),
                           INT8_C(  68), INT8_C(  -7), INT8_C( -27), INT8_C(   3),
                           INT8_C( -21), INT8_C(  50), INT8_C( -67), INT8_C( -39),
                           INT8_C(-108), INT8_C(  62), INT8_C( 101), INT8_C(  56),
                           INT8_C( -79), INT8_C( -37), INT8_C( -99), INT8_C( -56),
                           INT8_C(-119), INT8_C( -56), INT8_C(  -8), INT8_C( -16),
                           INT8_C( 115), INT8_C( -95), INT8_C( -73), INT8_C(  54),
                           INT8_C( 125), INT8_C(  85), INT8_C(  78), INT8_C( -65),
                           INT8_C(   4), INT8_C(  38), INT8_C( -84), INT8_C( -53),
                           INT8_C(  68), INT8_C(-108), INT8_C(-121), INT8_C(-115),
                           INT8_C( -59), INT8_C( -78), INT8_C(-111), INT8_C(  56)),
      simde_mm512_set_epi8(INT8_C(-104), INT8_C(-102), INT8_C( 102), INT8_C( -95),
                           INT8_C(  69), INT8_C(  13), INT8_C( -21), INT8_C(  45),
                           INT8_C(  62), INT8_C(-120), INT8_C(-111), INT8_C(  32),
                           INT8_C(-107), INT8_C( -30), INT8_C(  99), INT8_C( -64),
                           INT8_C(   8), INT8_C( -42), INT8_C(  81), INT8_C( -34),
                           INT8_C( -46), INT8_C(  26), INT8_C(  31), INT8_C(  -2),
                           INT8_C(  68), INT8_C(  -7), INT8_C( -71), INT8_C(  46),
                           INT8_C( -21), INT8_C( -73), INT8_C(  21), INT8_C(  83),
                           INT8_C(-108), INT8_C( -97), INT8_C( -69), INT8_C(  73),
                           INT8_C(  57), INT8_C( -37), INT8_C(  21), INT8_C(  82),
                           INT8_C(-119), INT8_C(-126), INT8_C( 126), INT8_C(  91),
                           INT8_C( 115), INT8_C(  31), INT8_C( -79), INT8_C(  28),
                           INT8_C(-106), INT8_C( -18), INT8_C(  65), INT8_C(-104),
                           INT8_C(  81), INT8_C(  38), INT8_C( -84), INT8_C(  -2),
                           INT8_C( -14), INT8_C(  85), INT8_C( -80), INT8_C(  80),
                           INT8_C(  48), INT8_C(  93), INT8_C(  79), INT8_C( 127)),
      UINT64_C(0xc46ac5246043f080) },
    { simde_mm512_set_epi8(INT8_C(  50), INT8_C(  43), INT8_C( -68), INT8_C(  97),
                           INT8_C( -26), INT8_C(-103), INT8_C(  71), INT8_C(-107),
                           INT8_C(  91), INT8_C(  45), INT8_C( -11), INT8_C(  47),
                           INT8_C(  29), INT8_C( -56), INT8_C(  26), INT8_C(  -9),
                           INT8_C(  10), INT8_C(  36), INT8_C(-116), INT8_C( -53),
                           INT8_C(  41), INT8_C(   1), INT8_C( -23), INT8_C(  61),
                           INT8_C(-127), INT8_C(  -4), INT8_C(  48), INT8_C( -68),
                           INT8_C(  89), INT8_C(-112), INT8_C( -31), INT8_C( 120),
                           INT8_C(  35), INT8_C(  62), INT8_C( -21), INT8_C(-114),
                           INT8_C(-104), INT8_C(  57), INT8_C(  42), INT8_C(-111),
                           INT8_C(  94), INT8_C( -63), INT8_C(  87), INT8_C(  64),
                           INT8_C( -65), INT8_C(  -2), INT8_C( 110), INT8_C(  -8),
                           INT8_C(  63), INT8_C( -51), INT8_C(  -4), INT8_C(  32),
                           INT8_C( -65), INT8_C(  55), INT8_C(  14), INT8_C(  81),
                           INT8_C(-123), INT8_C(-100), INT8_C( -39), INT8_C( -44),
                           INT8_C(  22), INT8_C( 112), INT8_C(  16), INT8_C(  15)),
      simde_mm512_set_epi8(INT8_C(  50), INT8_C( -11), INT8_C( -68), INT8_C( -31),
                           INT8_C( 105), INT8_C(-106), INT8_C(  98), INT8_C(  51),
                           INT8_C(  58), INT8_C( 103), INT8_C( 111), INT8_C(-127),
                           INT8_C(  68), INT8_C( -56), INT8_C( 124), INT8_C(-119),
                           INT8_C(  74), INT8_C( -62), INT8_C(-116), INT8_C(  37),
                           INT8_C( -12), INT8_C( 114), INT8_C(   0), INT8_C(  61),
                           INT8_C( 103), INT8_C(  -4), INT8_C(-105), INT8_C( -68),
                           INT8_C(  39), INT8_C(-100), INT8_C( -93), INT8_C(  11),
                           INT8_C( -80), INT8_C( -19), INT8_C( -22), INT8_C( -39),
                           INT8_C( 127), INT8_C( -38), INT8_C(-125), INT8_C(-111),
                           INT8_C(  84), INT8_C( -96), INT8_C(  87), INT8_C( -22),
                           INT8_C(  -5), INT8_C(  -3), INT8_C(-127), INT8_C(  41),
                           INT8_C(  74), INT8_C(  72), INT8_C(  -4), INT8_C(  28),
                           INT8_C(-115), INT8_C(  93), INT8_C( 102), INT8_C(  44),
                           INT8_C(-103), INT8_C( -29), INT8_C( -50), INT8_C(  48),
                           INT8_C( -96), INT8_C( -50), INT8_C(  46), INT8_C( -65)),
      UINT64_C(0x5491482be6d6192d) },
    { simde_mm512_set_epi8(INT8_C( -97), INT8_C(  28), INT8_C( -58), INT8_C(  11),
                           INT8_C( -14), INT8_C( 126), INT8_C(  81), INT8_C(  45),
                           INT8_C( -23), INT8_C( 120), INT8_C( -83), INT8_C( -16),
                           INT8_C(   7), INT8_C(  51), INT8_C( -57), INT8_C( -50),
                           INT8_C( -21), INT8_C(  98), INT8_C(  88), INT8_C(   0),
                           INT8_C( -66), INT8_C(   3), INT8_C( 124), INT8_C(-113),
                           INT8_C(  50), INT8_C(  32), INT8_C( -85), INT8_C( -93),
                           INT8_C( -44), INT8_C( -13), INT8_C( -94), INT8_C(  17),
                           INT8_C( 122), INT8_C(  79), INT8_C(-116), INT8_C(  43),
                           INT8_C( -77), INT8_C(-125), INT8_C( -23), INT8_C(-120),
                           INT8_C(  96), INT8_C( -64), INT8_C( -23), INT8_C( -46),
                           INT8_C( -29), INT8_C( -71), INT8_C(  71), INT8_C( -80),
                           INT8_C(  44), INT8_C( -92), INT8_C( -31), INT8_C(  26),
                           INT8_C(   8), INT8_C(  52), INT8_C( 117), INT8_C( 123),
                           INT8_C( -63), INT8_C(  45), INT8_C(  95), INT8_C(  24),
                           INT8_C(-108), INT8_C(  18), INT8_C( -60), INT8_C(  28)),
      simde_mm512_set_epi8(INT8_C( -23), INT8_C(-101), INT8_C( 116), INT8_C( 127),
                           INT8_C(  96), INT8_C(  40), INT8_C( -97), INT8_C(  40),
                           INT8_C(  86), INT8_C( -44), INT8_C(  70), INT8_C( -71),
                           INT8_C(  62), INT8_C( -21), INT8_C(  66), INT8_C(  68),
                           INT8_C( -87), INT8_C( -61), INT8_C(  48), INT8_C( -70),
                           INT8_C(  18), INT8_C( -78), INT8_C( -98), INT8_C( 117),
                           INT8_C(  74), INT8_C(  32), INT8_C(  93), INT8_C( 125),
                           INT8_C( -47), INT8_C( -60), INT8_C( -86), INT8_C( 117),
                           INT8_C( 122), INT8_C( -54), INT8_C(  50), INT8_C( 123),
                           INT8_C( -31), INT8_C( -74), INT8_C( -64), INT8_C(  54),
                           INT8_C( -81), INT8_C(  60), INT8_C(  31), INT8_C( -23),
                           INT8_C( 108), INT8_C(-119), INT8_C( -92), INT8_C( -80),
                           INT8_C( -30), INT8_C( -37), INT8_C(  51), INT8_C( -36),
                           INT8_C(   8), INT8_C(  52), INT8_C(  97), INT8_C( 123),
                           INT8_C( -49), INT8_C(-124), INT8_C(  95), INT8_C( -83),
                           INT8_C(  70), INT8_C( -50), INT8_C( -61), INT8_C(  25)),
      UINT64_C(0x4754f60c42869257) },
    { simde_mm512_set_epi8(INT8_C( 121), INT8_C( -20), INT8_C( -89), INT8_C( -94),
                           INT8_C( 112), INT8_C( -27), INT8_C(  81), INT8_C( -54),
                           INT8_C( -64), INT8_C(-114), INT8_C(  48), INT8_C( -89),
                           INT8_C( -61), INT8_C(  26), INT8_C(  43), INT8_C(  29),
                           INT8_C(   0), INT8_C( 125), INT8_C( -42), INT8_C( -67),
                           INT8_C(  15), INT8_C( 120), INT8_C(  36), INT8_C(  40),
                           INT8_C( -53), INT8_C(  34), INT8_C(-108), INT8_C( -58),
                           INT8_C(  26), INT8_C(-111), INT8_C(  63), INT8_C( -98),
                           INT8_C(  65), INT8_C(   8), INT8_C(-124), INT8_C(  96),
                           INT8_C( -13), INT8_C( -98), INT8_C(  99), INT8_C(  90),
                           INT8_C(  56), INT8_C( -45), INT8_C(-108), INT8_C( -19),
                           INT8_C(-124), INT8_C( -27), INT8_C(  22), INT8_C( 126),
                           INT8_C(-106), INT8_C( -68), INT8_C( -60), INT8_C(   8),
                           INT8_C( -54), INT8_C(  93), INT8_C( -33), INT8_C( -27),
                           INT8_C(  -7), INT8_C(  27), INT8_C(-122), INT8_C( -88),
                           INT8_C(  23), INT8_C(   6), INT8_C(  45), INT8_C( -21)),
      simde_mm512_set_epi8(INT8_C( 105), INT8_C(  52), INT8_C(  85), INT8_C(-104),
                           INT8_C(  57), INT8_C( -31), INT8_C( -38), INT8_C(-124),
                           INT8_C(-107), INT8_C(  -2), INT8_C(  55), INT8_C(  46),
                           INT8_C( -71), INT8_C(  77), INT8_C(  18), INT8_C(  70),
                           INT8_C(  89), INT8_C( 125), INT8_C( -42), INT8_C(-125),
                           INT8_C( 121), INT8_C( -11), INT8_C( -69), INT8_C( -59),
                           INT8_C( -53), INT8_C(  34), INT8_C(   9), INT8_C(  64),
                           INT8_C( -61), INT8_C( -25), INT8_C(-115), INT8_C( 100),
                           INT8_C(  65), INT8_C(   8), INT8_C(  69), INT8_C(  -8),
                           INT8_C( -15), INT8_C( -51), INT8_C(   1), INT8_C(  90),
                           INT8_C( 115), INT8_C(  51), INT8_C( -91), INT8_C(  56),
                           INT8_C(  64), INT8_C( -39), INT8_C(-119), INT8_C( -28),
                           INT8_C( -54), INT8_C(  28), INT8_C(  54), INT8_C(  -8),
                           INT8_C( -54), INT8_C(-128), INT8_C( -28), INT8_C( -71),
                           INT8_C( 107), INT8_C( -66), INT8_C(-114), INT8_C( -88),
                           INT8_C(  34), INT8_C( -83), INT8_C( -21), INT8_C( -64)),
      UINT64_C(0x9f8a170a1a071547) },
    { simde_mm512_set_epi8(INT8_C(  33), INT8_C( 121), INT8_C( 125), INT8_C(  35),
                           INT8_C(-103), INT8_C( -48), INT8_C( -22), INT8_C(  38),
                           INT8_C( -81), INT8_C(   9), INT8_C( -11), INT8_C(-124),
                           INT8_C(  71), INT8_C(   9), INT8_C( -42), INT8_C( 118),
                           INT8_C(  67), INT8_C(  45), INT8_C(  51), INT8_C( -92),
                           INT8_C( 126), INT8_C( 108), INT8_C(-123), INT8_C( -71),
                           INT8_C( 113), INT8_C(  32), INT8_C(  71), INT8_C(   3),
                           INT8_C( -26), INT8_C(  82), INT8_C( -81), INT8_C( -20),
                           INT8_C( -55), INT8_C( 112), INT8_C(  66), INT8_C(  37),
                           INT8_C(  67), INT8_C( -69), INT8_C(  64), INT8_C(  39),
                           INT8_C(  72), INT8_C(  45), INT8_C( 120), INT8_C(  -5),
                           INT8_C(-109), INT8_C(  62), INT8_C(  17), INT8_C(  31),
                           INT8_C( -30), INT8_C( -58), INT8_C(  56), INT8_C(  21),
                           INT8_C(  72), INT8_C( -75), INT8_C( -34), INT8_C( 120),
                           INT8_C(  95), INT8_C( 108), INT8_C(  32), INT8_C(  64),
                           INT8_C(-128), INT8_C( 102), INT8_C( -21), INT8_C(  28)),
      simde_mm512_set_epi8(INT8_C( 100), INT8_C( 121), INT8_C(  18), INT8_C(  28),
                           INT8_C(-117), INT8_C( 107), INT8_C(   3), INT8_C( -62),
                           INT8_C(  42), INT8_C(  72), INT8_C(  91), INT8_C(  86),
                           INT8_C( -72), INT8_C(   9), INT8_C( -80), INT8_C( 118),
                           INT8_C( 122), INT8_C(-108), INT8_C( -70), INT8_C( -63),
                           INT8_C(  56), INT8_C(  71), INT8_C( -14), INT8_C(  49),
                           INT8_C( -73), INT8_C(  53), INT8_C( -29), INT8_C(   3),
                           INT8_C( -73), INT8_C(  43), INT8_C( -22), INT8_C(  85),
                           INT8_C( -26), INT8_C(  -9), INT8_C(  66), INT8_C(   1),
                           INT8_C( -13), INT8_C(  60), INT8_C(-119), INT8_C( -83),
                           INT8_C(-122), INT8_C( -64), INT8_C( -83), INT8_C( -74),
                           INT8_C( 119), INT8_C(  -8), INT8_C(  12), INT8_C( 113),
                           INT8_C( -12), INT8_C( -84), INT8_C(   6), INT8_C(  69),
                           INT8_C(   2), INT8_C( -75), INT8_C( -34), INT8_C(-126),
                           INT8_C(   3), INT8_C(-128), INT8_C(  -9), INT8_C(  24),
                           INT8_C(  11), INT8_C( -94), INT8_C( -32), INT8_C( 110)),
      UINT64_C(0x390a6cac5bf669f6) },
    { simde_mm512_set_epi8(INT8_C(   2), INT8_C( -81), INT8_C(  14), INT8_C(  90),
                           INT8_C(-100), INT8_C(-122), INT8_C( -35), INT8_C(  81),
                           INT8_C( -14), INT8_C( -42), INT8_C( 125), INT8_C(-125),
                           INT8_C( -57), INT8_C(  90), INT8_C(  -9), INT8_C(  63),
                           INT8_C(  53), INT8_C(  77), INT8_C(  63), INT8_C( -84),
                           INT8_C(  27), INT8_C(  22), INT8_C( -28), INT8_C( -37),
                           INT8_C(  65), INT8_C( 118), INT8_C(-126), INT8_C(  97),
                           INT8_C( 109), INT8_C(-119), INT8_C(-114), INT8_C( -75),
                           INT8_C(-125), INT8_C( 121), INT8_C(-128), INT8_C( 103),
                           INT8_C(   0), INT8_C( 101), INT8_C( -41), INT8_C(  89),
                           INT8_C(  67), INT8_C( -65), INT8_C(   9), INT8_C(  -7),
                           INT8_C( -63), INT8_C(  13), INT8_C( 105), INT8_C(  92),
                           INT8_C( -18), INT8_C( -21), INT8_C(-102), INT8_C(-114),
                           INT8_C(  74), INT8_C( 121), INT8_C( -45), INT8_C(  52),
                           INT8_C( -63), INT8_C( -93), INT8_C(  98), INT8_C( 106),
                           INT8_C(-109), INT8_C( -47), INT8_C(  37), INT8_C(  70)),
      simde_mm512_set_epi8(INT8_C( -42), INT8_C(-124), INT8_C(  54), INT8_C(  74),
                           INT8_C( -92), INT8_C(  99), INT8_C(  79), INT8_C(  -3),
                           INT8_C(  61), INT8_C( -89), INT8_C(  84), INT8_C( -94),
                           INT8_C(  31), INT8_C(-116), INT8_C( -67), INT8_C(-102),
                           INT8_C( -72), INT8_C( -91), INT8_C(-105), INT8_C(-108),
                           INT8_C( -44), INT8_C(  74), INT8_C( -28), INT8_C( 124),
                           INT8_C( 120), INT8_C( -41), INT8_C( -79), INT8_C( 122),
                           INT8_C(  87), INT8_C(-119), INT8_C(  54), INT8_C(  -2),
                           INT8_C( -47), INT8_C(  84), INT8_C(-126), INT8_C( -64),
                           INT8_C(  14), INT8_C(  11), INT8_C(  37), INT8_C( -23),
                           INT8_C(  67), INT8_C( 124), INT8_C(  58), INT8_C( -94),
                           INT8_C(  30), INT8_C( -33), INT8_C(  70), INT8_C( -24),
                           INT8_C(  38), INT8_C( -97), INT8_C( -56), INT8_C( -60),
                           INT8_C( -59), INT8_C(  65), INT8_C( -74), INT8_C(  45),
                           INT8_C( -11), INT8_C(  55), INT8_C( -82), INT8_C(  12),
                           INT8_C( 106), INT8_C(  22), INT8_C(-124), INT8_C(  -4)),
      UINT64_C(0xd167f84855174f33) },
    { simde_mm512_set_epi8(INT8_C(  18), INT8_C(  13), INT8_C(  14), INT8_C(   4),
                           INT8_C(  -3), INT8_C( -64), INT8_C(  17), INT8_C(-115),
                           INT8_C(  21), INT8_C( -34), INT8_C( 125), INT8_C( -60),
                           INT8_C( -72), INT8_C(  74), INT8_C(  -5), INT8_C( -21),
                           INT8_C( -41), INT8_C(  22), INT8_C(  45), INT8_C( 102),
                           INT8_C(  59), INT8_C( -80), INT8_C( -15), INT8_C( -63),
                           INT8_C(  84), INT8_C( -71), INT8_C(   8), INT8_C(  12),
                           INT8_C( -11), INT8_C( -76), INT8_C(  62), INT8_C(  93),
                           INT8_C( -75), INT8_C( -77), INT8_C( -84), INT8_C(-108),
                           INT8_C( -35), INT8_C(  14), INT8_C( -60), INT8_C(  18),
                           INT8_C(  23), INT8_C( -60), INT8_C( -63), INT8_C(-114),
                           INT8_C( -55), INT8_C(  75), INT8_C( -99), INT8_C( -55),
                           INT8_C(  58), INT8_C(  76), INT8_C(-102), INT8_C(-118),
                           INT8_C(  10), INT8_C(  39), INT8_C( 119), INT8_C(  85),
                           INT8_C(  -8), INT8_C( -72), INT8_C( -60), INT8_C( -94),
                           INT8_C(-112), INT8_C( 119), INT8_C( 124), INT8_C(  76)),
      simde_mm512_set_epi8(INT8_C(  18), INT8_C( -74), INT8_C(  14), INT8_C(  36),
                           INT8_C(  -7), INT8_C( 113), INT8_C(  40), INT8_C(  48),
                           INT8_C(-107), INT8_C( -34), INT8_C( -75), INT8_C(  85),
                           INT8_C( -35), INT8_C(-116), INT8_C(  65), INT8_C( -21),
                           INT8_C(  15), INT8_C(   3), INT8_C(  45), INT8_C(  21),
                           INT8_C(  72), INT8_C(  93), INT8_C( 108), INT8_C( 125),
                           INT8_C(   1), INT8_C(  75), INT8_C(  21), INT8_C( -36),
                           INT8_C(-126), INT8_C( 122), INT8_C(  71), INT8_C(  76),
                           INT8_C(  28), INT8_C( -56), INT8_C(  32), INT8_C( 101),
                           INT8_C(-107), INT8_C(-111), INT8_C( -88), INT8_C( -19),
                           INT8_C( -77), INT8_C(  19), INT8_C( -21), INT8_C(-111),
                           INT8_C( -68), INT8_C(  82), INT8_C(-118), INT8_C( -76),
                           INT8_C(  47), INT8_C( 127), INT8_C(  62), INT8_C( -16),
                           INT8_C(  10), INT8_C( -14), INT8_C(-100), INT8_C(  86),
                           INT8_C(  29), INT8_C( 107), INT8_C(  56), INT8_C(  21),
                           INT8_C(  24), INT8_C(  68), INT8_C( -96), INT8_C(  64)),
      UINT64_C(0x48a450990f8b8607) },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__mmask64 r = simde_mm512_cmpgt_epi8_mask(test_vec[i].a, test_vec[i].b);
    simde_assert_equal_mmask64(r, test_vec[i].r);
   }

  return 0;
}

static int
test_simde_mm512_cmpgt_epu8_mask(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m512i   a;
    simde__m512i   b;
    simde__mmask64 r;
  } test_vec[8] = {
    { simde_x_mm512_set_epu8(UINT8_C( 92), UINT8_C(135), UINT8_C(120), UINT8_C(237),
                             UINT8_C(183), UINT8_C( 22), UINT8_C(190), UINT8_C(227),
                             UINT8_C( 55), UINT8_C(193), UINT8_C(211), UINT8_C(137),
                             UINT8_C( 30), UINT8_C(227), UINT8_C(230), UINT8_C( 89),
                             UINT8_C(243), UINT8_C(119), UINT8_C(168), UINT8_C(109),
                             UINT8_C( 68), UINT8_C(246), UINT8_C(  0), UINT8_C(238),
                             UINT8_C(  1), UINT8_C(116), UINT8_C(243), UINT8_C(183),
                             UINT8_C(134), UINT8_C(  0), UINT8_C(111), UINT8_C( 95),
                             UINT8_C(236), UINT8_C(  3), UINT8_C(122), UINT8_C(213),
                             UINT8_C( 13), UINT8_C( 25), UINT8_C(221), UINT8_C(129),
                             UINT8_C( 82), UINT8_C( 90), UINT8_C( 53), UINT8_C(123),
                             UINT8_C( 73), UINT8_C(108), UINT8_C(238), UINT8_C( 15),
                             UINT8_C(115), UINT8_C( 54), UINT8_C(102), UINT8_C(118),
                             UINT8_C( 39), UINT8_C(179), UINT8_C( 45), UINT8_C( 81),
                             UINT8_C(239), UINT8_C(228), UINT8_C( 67), UINT8_C(171),
                             UINT8_C( 79), UINT8_C(143), UINT8_C(134), UINT8_C(124)),
      simde_x_mm512_set_epu8(UINT8_C(  9), UINT8_C(135), UINT8_C(120), UINT8_C(220),
                             UINT8_C( 36), UINT8_C(153), UINT8_C(152), UINT8_C( 25),
                             UINT8_C(145), UINT8_C(193), UINT8_C(221), UINT8_C(136),
                             UINT8_C( 28), UINT8_C(212), UINT8_C(230), UINT8_C(170),
                             UINT8_C(243), UINT8_C( 53), UINT8_C(168), UINT8_C(149),
                             UINT8_C( 68), UINT8_C( 42), UINT8_C(138), UINT8_C(111),
                             UINT8_C( 54), UINT8_C(198), UINT8_C(243), UINT8_C( 27),
                             UINT8_C( 23), UINT8_C( 41), UINT8_C(137), UINT8_C( 44),
                             UINT8_C(  7), UINT8_C(136), UINT8_C( 32), UINT8_C(213),
                             UINT8_C(114), UINT8_C(184), UINT8_C( 73), UINT8_C(160),
                             UINT8_C( 96), UINT8_C(110), UINT8_C(175), UINT8_C(180),
                             UINT8_C(103), UINT8_C(156), UINT8_C(234), UINT8_C( 18),
                             UINT8_C(115), UINT8_C( 54), UINT8_C(216), UINT8_C(125),
                             UINT8_C(110), UINT8_C( 31), UINT8_C( 51), UINT8_C(152),
                             UINT8_C(141), UINT8_C(229), UINT8_C( 62), UINT8_C(171),
                             UINT8_C( 49), UINT8_C(141), UINT8_C( 38), UINT8_C(  4)),
      UINT64_C(0x9b1c4519a20204af) },
    { simde_x_mm512_set_epu8(UINT8_C( 16), UINT8_C( 41), UINT8_C(102), UINT8_C(161),
                             UINT8_C( 17), UINT8_C( 42), UINT8_C(170), UINT8_C( 38),
                             UINT8_C( 62), UINT8_C(200), UINT8_C( 60), UINT8_C( 19),
                             UINT8_C(156), UINT8_C(149), UINT8_C(105), UINT8_C(180),
                             UINT8_C( 10), UINT8_C(247), UINT8_C(244), UINT8_C(200),
                             UINT8_C(185), UINT8_C( 96), UINT8_C( 31), UINT8_C( 24),
                             UINT8_C( 68), UINT8_C(249), UINT8_C(229), UINT8_C(  3),
                             UINT8_C(235), UINT8_C( 50), UINT8_C(189), UINT8_C(217),
                             UINT8_C(148), UINT8_C( 62), UINT8_C(101), UINT8_C( 56),
                             UINT8_C(177), UINT8_C(219), UINT8_C(157), UINT8_C(200),
                             UINT8_C(137), UINT8_C(200), UINT8_C(248), UINT8_C(240),
                             UINT8_C(115), UINT8_C(161), UINT8_C(183), UINT8_C( 54),
                             UINT8_C(125), UINT8_C( 85), UINT8_C( 78), UINT8_C(191),
                             UINT8_C(  4), UINT8_C( 38), UINT8_C(172), UINT8_C(203),
                             UINT8_C( 68), UINT8_C(148), UINT8_C(135), UINT8_C(141),
                             UINT8_C(197), UINT8_C(178), UINT8_C(145), UINT8_C( 56)),
      simde_x_mm512_set_epu8(UINT8_C(152), UINT8_C(154), UINT8_C(102), UINT8_C(161),
                             UINT8_C( 69), UINT8_C( 13), UINT8_C(235), UINT8_C( 45),
                             UINT8_C( 62), UINT8_C(136), UINT8_C(145), UINT8_C( 32),
                             UINT8_C(149), UINT8_C(226), UINT8_C( 99), UINT8_C(192),
                             UINT8_C(  8), UINT8_C(214), UINT8_C( 81), UINT8_C(222),
                             UINT8_C(210), UINT8_C( 26), UINT8_C( 31), UINT8_C(254),
                             UINT8_C( 68), UINT8_C(249), UINT8_C(185), UINT8_C( 46),
                             UINT8_C(235), UINT8_C(183), UINT8_C( 21), UINT8_C( 83),
                             UINT8_C(148), UINT8_C(159), UINT8_C(187), UINT8_C( 73),
                             UINT8_C( 57), UINT8_C(219), UINT8_C( 21), UINT8_C( 82),
                             UINT8_C(137), UINT8_C(130), UINT8_C(126), UINT8_C( 91),
                             UINT8_C(115), UINT8_C( 31), UINT8_C(177), UINT8_C( 28),
                             UINT8_C(150), UINT8_C(238), UINT8_C( 65), UINT8_C(152),
                             UINT8_C( 81), UINT8_C( 38), UINT8_C(172), UINT8_C(254),
                             UINT8_C(242), UINT8_C( 85), UINT8_C(176), UINT8_C( 80),
                             UINT8_C( 48), UINT8_C( 93), UINT8_C( 79), UINT8_C(127)),
      UINT64_C(0x44ae4230b77305e) },
    { simde_x_mm512_set_epu8(UINT8_C( 50), UINT8_C( 43), UINT8_C(188), UINT8_C( 97),
                             UINT8_C(230), UINT8_C(153), UINT8_C( 71), UINT8_C(149),
                             UINT8_C( 91), UINT8_C( 45), UINT8_C(245), UINT8_C( 47),
                             UINT8_C( 29), UINT8_C(200), UINT8_C( 26), UINT8_C(247),
                             UINT8_C( 10), UINT8_C( 36), UINT8_C(140), UINT8_C(203),
                             UINT8_C( 41), UINT8_C(  1), UINT8_C(233), UINT8_C( 61),
                             UINT8_C(129), UINT8_C(252), UINT8_C( 48), UINT8_C(188),
                             UINT8_C( 89), UINT8_C(144), UINT8_C(225), UINT8_C(120),
                             UINT8_C( 35), UINT8_C( 62), UINT8_C(235), UINT8_C(142),
                             UINT8_C(152), UINT8_C( 57), UINT8_C( 42), UINT8_C(145),
                             UINT8_C( 94), UINT8_C(193), UINT8_C( 87), UINT8_C( 64),
                             UINT8_C(191), UINT8_C(254), UINT8_C(110), UINT8_C(248),
                             UINT8_C( 63), UINT8_C(205), UINT8_C(252), UINT8_C( 32),
                             UINT8_C(191), UINT8_C( 55), UINT8_C( 14), UINT8_C( 81),
                             UINT8_C(133), UINT8_C(156), UINT8_C(217), UINT8_C(212),
                             UINT8_C( 22), UINT8_C(112), UINT8_C( 16), UINT8_C( 15)),
      simde_x_mm512_set_epu8(UINT8_C( 50), UINT8_C(245), UINT8_C(188), UINT8_C(225),
                             UINT8_C(105), UINT8_C(150), UINT8_C( 98), UINT8_C( 51),
                             UINT8_C( 58), UINT8_C(103), UINT8_C(111), UINT8_C(129),
                             UINT8_C( 68), UINT8_C(200), UINT8_C(124), UINT8_C(137),
                             UINT8_C( 74), UINT8_C(194), UINT8_C(140), UINT8_C( 37),
                             UINT8_C(244), UINT8_C(114), UINT8_C(  0), UINT8_C( 61),
                             UINT8_C(103), UINT8_C(252), UINT8_C(151), UINT8_C(188),
                             UINT8_C( 39), UINT8_C(156), UINT8_C(163), UINT8_C( 11),
                             UINT8_C(176), UINT8_C(237), UINT8_C(234), UINT8_C(217),
                             UINT8_C(127), UINT8_C(218), UINT8_C(131), UINT8_C(145),
                             UINT8_C( 84), UINT8_C(160), UINT8_C( 87), UINT8_C(234),
                             UINT8_C(251), UINT8_C(253), UINT8_C(129), UINT8_C( 41),
                             UINT8_C( 74), UINT8_C( 72), UINT8_C(252), UINT8_C( 28),
                             UINT8_C(141), UINT8_C( 93), UINT8_C(102), UINT8_C( 44),
                             UINT8_C(153), UINT8_C(227), UINT8_C(206), UINT8_C( 48),
                             UINT8_C(160), UINT8_C(206), UINT8_C( 46), UINT8_C(191)),
      UINT64_C(0xda1128b28c55930) },
    { simde_x_mm512_set_epu8(UINT8_C(159), UINT8_C( 28), UINT8_C(198), UINT8_C( 11),
                             UINT8_C(242), UINT8_C(126), UINT8_C( 81), UINT8_C( 45),
                             UINT8_C(233), UINT8_C(120), UINT8_C(173), UINT8_C(240),
                             UINT8_C(  7), UINT8_C( 51), UINT8_C(199), UINT8_C(206),
                             UINT8_C(235), UINT8_C( 98), UINT8_C( 88), UINT8_C(  0),
                             UINT8_C(190), UINT8_C(  3), UINT8_C(124), UINT8_C(143),
                             UINT8_C( 50), UINT8_C( 32), UINT8_C(171), UINT8_C(163),
                             UINT8_C(212), UINT8_C(243), UINT8_C(162), UINT8_C( 17),
                             UINT8_C(122), UINT8_C( 79), UINT8_C(140), UINT8_C( 43),
                             UINT8_C(179), UINT8_C(131), UINT8_C(233), UINT8_C(136),
                             UINT8_C( 96), UINT8_C(192), UINT8_C(233), UINT8_C(210),
                             UINT8_C(227), UINT8_C(185), UINT8_C( 71), UINT8_C(176),
                             UINT8_C( 44), UINT8_C(164), UINT8_C(225), UINT8_C( 26),
                             UINT8_C(  8), UINT8_C( 52), UINT8_C(117), UINT8_C(123),
                             UINT8_C(193), UINT8_C( 45), UINT8_C( 95), UINT8_C( 24),
                             UINT8_C(148), UINT8_C( 18), UINT8_C(196), UINT8_C( 28)),
      simde_x_mm512_set_epu8(UINT8_C(233), UINT8_C(155), UINT8_C(116), UINT8_C(127),
                             UINT8_C( 96), UINT8_C( 40), UINT8_C(159), UINT8_C( 40),
                             UINT8_C( 86), UINT8_C(212), UINT8_C( 70), UINT8_C(185),
                             UINT8_C( 62), UINT8_C(235), UINT8_C( 66), UINT8_C( 68),
                             UINT8_C(169), UINT8_C(195), UINT8_C( 48), UINT8_C(186),
                             UINT8_C( 18), UINT8_C(178), UINT8_C(158), UINT8_C(117),
                             UINT8_C( 74), UINT8_C( 32), UINT8_C( 93), UINT8_C(125),
                             UINT8_C(209), UINT8_C(196), UINT8_C(170), UINT8_C(117),
                             UINT8_C(122), UINT8_C(202), UINT8_C( 50), UINT8_C(123),
                             UINT8_C(225), UINT8_C(182), UINT8_C(192), UINT8_C( 54),
                             UINT8_C(175), UINT8_C( 60), UINT8_C( 31), UINT8_C(233),
                             UINT8_C(108), UINT8_C(137), UINT8_C(164), UINT8_C(176),
                             UINT8_C(226), UINT8_C(219), UINT8_C( 51), UINT8_C(220),
                             UINT8_C(  8), UINT8_C( 52), UINT8_C( 97), UINT8_C(123),
                             UINT8_C(207), UINT8_C(132), UINT8_C( 95), UINT8_C(173),
                             UINT8_C( 70), UINT8_C(206), UINT8_C(195), UINT8_C( 25)),
      UINT64_C(0x2db3a93c236c220b) },
    { simde_x_mm512_set_epu8(UINT8_C(121), UINT8_C(236), UINT8_C(167), UINT8_C(162),
                             UINT8_C(112), UINT8_C(229), UINT8_C( 81), UINT8_C(202),
                             UINT8_C(192), UINT8_C(142), UINT8_C( 48), UINT8_C(167),
                             UINT8_C(195), UINT8_C( 26), UINT8_C( 43), UINT8_C( 29),
                             UINT8_C(  0), UINT8_C(125), UINT8_C(214), UINT8_C(189),
                             UINT8_C( 15), UINT8_C(120), UINT8_C( 36), UINT8_C( 40),
                             UINT8_C(203), UINT8_C( 34), UINT8_C(148), UINT8_C(198),
                             UINT8_C( 26), UINT8_C(145), UINT8_C( 63), UINT8_C(158),
                             UINT8_C( 65), UINT8_C(  8), UINT8_C(132), UINT8_C( 96),
                             UINT8_C(243), UINT8_C(158), UINT8_C( 99), UINT8_C( 90),
                             UINT8_C( 56), UINT8_C(211), UINT8_C(148), UINT8_C(237),
                             UINT8_C(132), UINT8_C(229), UINT8_C( 22), UINT8_C(126),
                             UINT8_C(150), UINT8_C(188), UINT8_C(196), UINT8_C(  8),
                             UINT8_C(202), UINT8_C( 93), UINT8_C(223), UINT8_C(229),
                             UINT8_C(249), UINT8_C( 27), UINT8_C(134), UINT8_C(168),
                             UINT8_C( 23), UINT8_C(  6), UINT8_C( 45), UINT8_C(235)),
      simde_x_mm512_set_epu8(UINT8_C(105), UINT8_C( 52), UINT8_C( 85), UINT8_C(152),
                             UINT8_C( 57), UINT8_C(225), UINT8_C(218), UINT8_C(132),
                             UINT8_C(149), UINT8_C(254), UINT8_C( 55), UINT8_C( 46),
                             UINT8_C(185), UINT8_C( 77), UINT8_C( 18), UINT8_C( 70),
                             UINT8_C( 89), UINT8_C(125), UINT8_C(214), UINT8_C(131),
                             UINT8_C(121), UINT8_C(245), UINT8_C(187), UINT8_C(197),
                             UINT8_C(203), UINT8_C( 34), UINT8_C(  9), UINT8_C( 64),
                             UINT8_C(195), UINT8_C(231), UINT8_C(141), UINT8_C(100),
                             UINT8_C( 65), UINT8_C(  8), UINT8_C( 69), UINT8_C(248),
                             UINT8_C(241), UINT8_C(205), UINT8_C(  1), UINT8_C( 90),
                             UINT8_C(115), UINT8_C( 51), UINT8_C(165), UINT8_C( 56),
                             UINT8_C( 64), UINT8_C(217), UINT8_C(137), UINT8_C(228),
                             UINT8_C(202), UINT8_C( 28), UINT8_C( 54), UINT8_C(248),
                             UINT8_C(202), UINT8_C(128), UINT8_C(228), UINT8_C(185),
                             UINT8_C(107), UINT8_C(190), UINT8_C(142), UINT8_C(168),
                             UINT8_C( 34), UINT8_C(173), UINT8_C(235), UINT8_C(192)),
      UINT64_C(0xfd9a10312a5c6181) },
    { simde_x_mm512_set_epu8(UINT8_C( 33), UINT8_C(121), UINT8_C(125), UINT8_C( 35),
                             UINT8_C(153), UINT8_C(208), UINT8_C(234), UINT8_C( 38),
                             UINT8_C(175), UINT8_C(  9), UINT8_C(245), UINT8_C(132),
                             UINT8_C( 71), UINT8_C(  9), UINT8_C(214), UINT8_C(118),
                             UINT8_C( 67), UINT8_C( 45), UINT8_C( 51), UINT8_C(164),
                             UINT8_C(126), UINT8_C(108), UINT8_C(133), UINT8_C(185),
                             UINT8_C(113), UINT8_C( 32), UINT8_C( 71), UINT8_C(  3),
                             UINT8_C(230), UINT8_C( 82), UINT8_C(175), UINT8_C(236),
                             UINT8_C(201), UINT8_C(112), UINT8_C( 66), UINT8_C( 37),
                             UINT8_C( 67), UINT8_C(187), UINT8_C( 64), UINT8_C( 39),
                             UINT8_C( 72), UINT8_C( 45), UINT8_C(120), UINT8_C(251),
                             UINT8_C(147), UINT8_C( 62), UINT8_C( 17), UINT8_C( 31),
                             UINT8_C(226), UINT8_C(198), UINT8_C( 56), UINT8_C( 21),
                             UINT8_C( 72), UINT8_C(181), UINT8_C(222), UINT8_C(120),
                             UINT8_C( 95), UINT8_C(108), UINT8_C( 32), UINT8_C( 64),
                             UINT8_C(128), UINT8_C(102), UINT8_C(235), UINT8_C( 28)),
      simde_x_mm512_set_epu8(UINT8_C(100), UINT8_C(121), UINT8_C( 18), UINT8_C( 28),
                             UINT8_C(139), UINT8_C(107), UINT8_C(  3), UINT8_C(194),
                             UINT8_C( 42), UINT8_C( 72), UINT8_C( 91), UINT8_C( 86),
                             UINT8_C(184), UINT8_C(  9), UINT8_C(176), UINT8_C(118),
                             UINT8_C(122), UINT8_C(148), UINT8_C(186), UINT8_C(193),
                             UINT8_C( 56), UINT8_C( 71), UINT8_C(242), UINT8_C( 49),
                             UINT8_C(183), UINT8_C( 53), UINT8_C(227), UINT8_C(  3),
                             UINT8_C(183), UINT8_C( 43), UINT8_C(234), UINT8_C( 85),
                             UINT8_C(230), UINT8_C(247), UINT8_C( 66), UINT8_C(  1),
                             UINT8_C(243), UINT8_C( 60), UINT8_C(137), UINT8_C(173),
                             UINT8_C(134), UINT8_C(192), UINT8_C(173), UINT8_C(182),
                             UINT8_C(119), UINT8_C(248), UINT8_C( 12), UINT8_C(113),
                             UINT8_C(244), UINT8_C(172), UINT8_C(  6), UINT8_C( 69),
                             UINT8_C(  2), UINT8_C(181), UINT8_C(222), UINT8_C(130),
                             UINT8_C(  3), UINT8_C(128), UINT8_C(247), UINT8_C( 24),
                             UINT8_C( 11), UINT8_C(162), UINT8_C(224), UINT8_C(110)),
      UINT64_C(0x3eb20d0d141a689a) },
    { simde_x_mm512_set_epu8(UINT8_C(  2), UINT8_C(175), UINT8_C( 14), UINT8_C( 90),
                             UINT8_C(156), UINT8_C(134), UINT8_C(221), UINT8_C( 81),
                             UINT8_C(242), UINT8_C(214), UINT8_C(125), UINT8_C(131),
                             UINT8_C(199), UINT8_C( 90), UINT8_C(247), UINT8_C( 63),
                             UINT8_C( 53), UINT8_C( 77), UINT8_C( 63), UINT8_C(172),
                             UINT8_C( 27), UINT8_C( 22), UINT8_C(228), UINT8_C(219),
                             UINT8_C( 65), UINT8_C(118), UINT8_C(130), UINT8_C( 97),
                             UINT8_C(109), UINT8_C(137), UINT8_C(142), UINT8_C(181),
                             UINT8_C(131), UINT8_C(121), UINT8_C(128), UINT8_C(103),
                             UINT8_C(  0), UINT8_C(101), UINT8_C(215), UINT8_C( 89),
                             UINT8_C( 67), UINT8_C(191), UINT8_C(  9), UINT8_C(249),
                             UINT8_C(193), UINT8_C( 13), UINT8_C(105), UINT8_C( 92),
                             UINT8_C(238), UINT8_C(235), UINT8_C(154), UINT8_C(142),
                             UINT8_C( 74), UINT8_C(121), UINT8_C(211), UINT8_C( 52),
                             UINT8_C(193), UINT8_C(163), UINT8_C( 98), UINT8_C(106),
                             UINT8_C(147), UINT8_C(209), UINT8_C( 37), UINT8_C( 70)),
      simde_x_mm512_set_epu8(UINT8_C(214), UINT8_C(132), UINT8_C( 54), UINT8_C( 74),
                             UINT8_C(164), UINT8_C( 99), UINT8_C( 79), UINT8_C(253),
                             UINT8_C( 61), UINT8_C(167), UINT8_C( 84), UINT8_C(162),
                             UINT8_C( 31), UINT8_C(140), UINT8_C(189), UINT8_C(154),
                             UINT8_C(184), UINT8_C(165), UINT8_C(151), UINT8_C(148),
                             UINT8_C(212), UINT8_C( 74), UINT8_C(228), UINT8_C(124),
                             UINT8_C(120), UINT8_C(215), UINT8_C(177), UINT8_C(122),
                             UINT8_C( 87), UINT8_C(137), UINT8_C( 54), UINT8_C(254),
                             UINT8_C(209), UINT8_C( 84), UINT8_C(130), UINT8_C(192),
                             UINT8_C( 14), UINT8_C( 11), UINT8_C( 37), UINT8_C(233),
                             UINT8_C( 67), UINT8_C(124), UINT8_C( 58), UINT8_C(162),
                             UINT8_C( 30), UINT8_C(223), UINT8_C( 70), UINT8_C(232),
                             UINT8_C( 38), UINT8_C(159), UINT8_C(200), UINT8_C(196),
                             UINT8_C(197), UINT8_C( 65), UINT8_C(182), UINT8_C( 45),
                             UINT8_C(245), UINT8_C( 55), UINT8_C(174), UINT8_C( 12),
                             UINT8_C(106), UINT8_C( 22), UINT8_C(132), UINT8_C(252)),
      UINT64_C(0x56ea110a465ac75c) },
    { simde_x_mm512_set_epu8(UINT8_C( 18), UINT8_C( 13), UINT8_C( 14), UINT8_C(  4),
                             UINT8_C(253), UINT8_C(192), UINT8_C( 17), UINT8_C(141),
                             UINT8_C( 21), UINT8_C(222), UINT8_C(125), UINT8_C(196),
                             UINT8_C(184), UINT8_C( 74), UINT8_C(251), UINT8_C(235),
                             UINT8_C(215), UINT8_C( 22), UINT8_C( 45), UINT8_C(102),
                             UINT8_C( 59), UINT8_C(176), UINT8_C(241), UINT8_C(193),
                             UINT8_C( 84), UINT8_C(185), UINT8_C(  8), UINT8_C( 12),
                             UINT8_C(245), UINT8_C(180), UINT8_C( 62), UINT8_C( 93),
                             UINT8_C(181), UINT8_C(179), UINT8_C(172), UINT8_C(148),
                             UINT8_C(221), UINT8_C( 14), UINT8_C(196), UINT8_C( 18),
                             UINT8_C( 23), UINT8_C(196), UINT8_C(193), UINT8_C(142),
                             UINT8_C(201), UINT8_C( 75), UINT8_C(157), UINT8_C(201),
                             UINT8_C( 58), UINT8_C( 76), UINT8_C(154), UINT8_C(138),
                             UINT8_C( 10), UINT8_C( 39), UINT8_C(119), UINT8_C( 85),
                             UINT8_C(248), UINT8_C(184), UINT8_C(196), UINT8_C(162),
                             UINT8_C(144), UINT8_C(119), UINT8_C(124), UINT8_C( 76)),
      simde_x_mm512_set_epu8(UINT8_C( 18), UINT8_C(182), UINT8_C( 14), UINT8_C( 36),
                             UINT8_C(249), UINT8_C(113), UINT8_C( 40), UINT8_C( 48),
                             UINT8_C(149), UINT8_C(222), UINT8_C(181), UINT8_C( 85),
                             UINT8_C(221), UINT8_C(140), UINT8_C( 65), UINT8_C(235),
                             UINT8_C( 15), UINT8_C(  3), UINT8_C( 45), UINT8_C( 21),
                             UINT8_C( 72), UINT8_C( 93), UINT8_C(108), UINT8_C(125),
                             UINT8_C(  1), UINT8_C( 75), UINT8_C( 21), UINT8_C(220),
                             UINT8_C(130), UINT8_C(122), UINT8_C( 71), UINT8_C( 76),
                             UINT8_C( 28), UINT8_C(200), UINT8_C( 32), UINT8_C(101),
                             UINT8_C(149), UINT8_C(145), UINT8_C(168), UINT8_C(237),
                             UINT8_C(179), UINT8_C( 19), UINT8_C(235), UINT8_C(145),
                             UINT8_C(188), UINT8_C( 82), UINT8_C(138), UINT8_C(180),
                             UINT8_C( 47), UINT8_C(127), UINT8_C( 62), UINT8_C(240),
                             UINT8_C( 10), UINT8_C(242), UINT8_C(156), UINT8_C( 86),
                             UINT8_C( 29), UINT8_C(107), UINT8_C( 56), UINT8_C( 21),
                             UINT8_C( 24), UINT8_C( 68), UINT8_C(160), UINT8_C( 64)),
      UINT64_C(0xd12d7cdba4ba0fd) },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__mmask64 r = simde_mm512_cmpgt_epu8_mask(test_vec[i].a, test_vec[i].b);
    simde_assert_equal_mmask64(r, test_vec[i].r);
   }

  return 0;
}

static int
test_simde_mm512_cmpgt_epi16_mask(SIMDE_MUNIT_TEST_ARGS) {
#if 1
  const struct {
    const int16_t a[32];
    const int16_t b[32];
    simde__mmask32 r;
  } test_vec[8] = {
    { { -INT16_C( 12416), -INT16_C( 31684), -INT16_C(  9444), -INT16_C(  3036),  INT16_C(  5455), -INT16_C( 18578), -INT16_C( 19372), -INT16_C( 29883),
         INT16_C(  9857), -INT16_C( 17502),  INT16_C( 19793), -INT16_C( 12525), -INT16_C( 20895), -INT16_C( 25812), -INT16_C(  2096),  INT16_C( 20572),
        -INT16_C( 26426), -INT16_C(  7468), -INT16_C(  1676), -INT16_C( 15402),  INT16_C( 17422),  INT16_C( 25211), -INT16_C( 16136),  INT16_C( 31214),
        -INT16_C( 28442),  INT16_C( 14388),  INT16_C( 18653),  INT16_C( 15879),  INT16_C( 13302), -INT16_C( 14631),  INT16_C( 13610), -INT16_C(  4073) },
      { -INT16_C(  5170),  INT16_C( 17107), -INT16_C( 22044), -INT16_C(  3579), -INT16_C( 32530), -INT16_C(  6571),  INT16_C( 17216),  INT16_C( 10080),
        -INT16_C( 27437), -INT16_C( 20385),  INT16_C( 26332), -INT16_C( 11282), -INT16_C( 14439), -INT16_C( 15463), -INT16_C( 20227), -INT16_C( 13389),
        -INT16_C( 31076), -INT16_C( 32755),  INT16_C(  4656),  INT16_C(  7795), -INT16_C( 14189), -INT16_C( 11516),  INT16_C( 25611), -INT16_C(  8454),
         INT16_C( 23033), -INT16_C( 10866),  INT16_C( 31935),  INT16_C( 22696),  INT16_C( 16963),  INT16_C( 16411), -INT16_C( 12302), -INT16_C( 29173) },
      UINT32_C(3266560796) },
    { {  INT16_C(  6229), -INT16_C( 31473), -INT16_C( 32213), -INT16_C( 16733), -INT16_C( 22454),  INT16_C( 21905), -INT16_C( 29684),  INT16_C(  1331),
        -INT16_C( 15899), -INT16_C( 23077), -INT16_C( 31939), -INT16_C( 32515),  INT16_C(  6597), -INT16_C( 18239), -INT16_C( 13080),  INT16_C( 15686),
         INT16_C( 21989),  INT16_C(  4291),  INT16_C( 26327),  INT16_C(  8654),  INT16_C( 24334),  INT16_C(  7030), -INT16_C( 22037), -INT16_C( 12000),
        -INT16_C(  1174), -INT16_C( 22666),  INT16_C( 29567),  INT16_C( 17448), -INT16_C(  5748),  INT16_C( 29948),  INT16_C( 17333), -INT16_C( 25934) },
      {  INT16_C( 30104),  INT16_C( 28842),  INT16_C( 30939), -INT16_C(  5487),  INT16_C(  2264), -INT16_C( 15611),  INT16_C(  9649),  INT16_C(  7316),
         INT16_C(  2593), -INT16_C( 24381), -INT16_C(  5250),  INT16_C(  2788), -INT16_C(  7724), -INT16_C( 30081),  INT16_C( 12580), -INT16_C( 17372),
        -INT16_C( 12378), -INT16_C( 32468), -INT16_C( 16825),  INT16_C(  8043),  INT16_C( 28870),  INT16_C( 30691),  INT16_C( 30614), -INT16_C( 18541),
         INT16_C( 22402),  INT16_C(    87),  INT16_C( 15170),  INT16_C(  5898), -INT16_C( 30436),  INT16_C( 16545), -INT16_C( 14918),  INT16_C( 24829) },
      UINT32_C(2089792032) },
    { {  INT16_C( 10644), -INT16_C(  8990),  INT16_C( 19943), -INT16_C( 20997), -INT16_C(  8514),  INT16_C( 21541), -INT16_C( 18346), -INT16_C( 10229),
         INT16_C( 25103),  INT16_C( 21208), -INT16_C(  7523), -INT16_C( 17815),  INT16_C(  2668),  INT16_C(  9978), -INT16_C(  2097),  INT16_C( 25735),
         INT16_C( 26913),  INT16_C(  2112),  INT16_C( 15286),  INT16_C( 29878), -INT16_C(  9446),  INT16_C( 28872), -INT16_C( 11373), -INT16_C( 23736),
         INT16_C(  8245), -INT16_C( 11275),  INT16_C( 24066),  INT16_C( 28301), -INT16_C( 30872),  INT16_C( 14229),  INT16_C(  7295), -INT16_C( 24421) },
      { -INT16_C(  9339),  INT16_C( 15272),  INT16_C( 24087),  INT16_C( 12720),  INT16_C( 30777), -INT16_C( 12895), -INT16_C(  5812), -INT16_C( 32400),
         INT16_C( 25865),  INT16_C(  2900), -INT16_C(  7741),  INT16_C( 11130),  INT16_C(  3945), -INT16_C(  6046), -INT16_C(   469), -INT16_C( 20344),
         INT16_C( 12505), -INT16_C(  3861), -INT16_C( 25713), -INT16_C( 14303), -INT16_C( 15852),  INT16_C( 24725),  INT16_C(  1451), -INT16_C( 19231),
         INT16_C( 13930),  INT16_C( 11712),  INT16_C( 14871), -INT16_C( 32680), -INT16_C( 17591),  INT16_C( 29800), -INT16_C(  3911), -INT16_C( 28124) },
      UINT32_C(3426723489) },
    { {  INT16_C(  3873), -INT16_C( 20349), -INT16_C( 23381), -INT16_C( 16520),  INT16_C(  3687),  INT16_C(  4639),  INT16_C(    19),  INT16_C( 32455),
        -INT16_C( 30922),  INT16_C( 20139),  INT16_C(  1217),  INT16_C(  2766),  INT16_C( 14271),  INT16_C( 30846), -INT16_C( 24025),  INT16_C( 18442),
        -INT16_C( 29263),  INT16_C( 23800),  INT16_C( 28978), -INT16_C( 26341),  INT16_C( 14975), -INT16_C( 27989),  INT16_C( 29243),  INT16_C( 28944),
        -INT16_C( 17159), -INT16_C( 17729), -INT16_C( 28992),  INT16_C( 32708),  INT16_C( 17093), -INT16_C(  4873),  INT16_C(   484), -INT16_C( 27083) },
      {  INT16_C( 11663), -INT16_C( 15886),  INT16_C(  3742),  INT16_C(  7514),  INT16_C(  1352), -INT16_C( 31824), -INT16_C( 16264),  INT16_C( 29173),
        -INT16_C( 19332),  INT16_C( 15404), -INT16_C(  4030),  INT16_C(  1979), -INT16_C( 19917),  INT16_C(  6132),  INT16_C( 10676),  INT16_C( 17325),
        -INT16_C( 24490), -INT16_C(  2812),  INT16_C( 24238), -INT16_C(  2542), -INT16_C( 15773), -INT16_C(  9350),  INT16_C( 28547), -INT16_C(   179),
         INT16_C( 31011),  INT16_C( 26172), -INT16_C(  2199), -INT16_C( 25491),  INT16_C( 25002),  INT16_C( 24244),  INT16_C( 24970), -INT16_C(  7775) },
      UINT32_C( 148291312) },
    { { -INT16_C( 23295), -INT16_C( 20522), -INT16_C(  6141),  INT16_C( 26278),  INT16_C(  8363),  INT16_C( 11842), -INT16_C( 28785), -INT16_C( 19923),
         INT16_C( 26888),  INT16_C( 28952), -INT16_C( 31135),  INT16_C(  2830), -INT16_C( 15641),  INT16_C( 29289),  INT16_C(  2595),  INT16_C(  9555),
         INT16_C( 10671), -INT16_C( 19756),  INT16_C( 31249), -INT16_C( 17384),  INT16_C( 23194),  INT16_C( 10730),  INT16_C(  6377), -INT16_C(  3620),
        -INT16_C(  2943), -INT16_C(  7581),  INT16_C( 29050),  INT16_C( 25325),  INT16_C( 22067),  INT16_C( 22228),  INT16_C( 10080),  INT16_C(  3963) },
      {  INT16_C( 20560),  INT16_C( 25025), -INT16_C(  9526),  INT16_C( 25886),  INT16_C(  2100),  INT16_C(  7822),  INT16_C( 27168), -INT16_C( 24049),
         INT16_C( 29279), -INT16_C(  9852),  INT16_C( 29411),  INT16_C(  5691),  INT16_C(  4040),  INT16_C( 10605), -INT16_C(  6090), -INT16_C( 31176),
        -INT16_C(  1480),  INT16_C(  1000),  INT16_C(  1748),  INT16_C(  2152), -INT16_C(  2546),  INT16_C( 12070),  INT16_C( 13921), -INT16_C( 16175),
         INT16_C( 21928), -INT16_C( 29543), -INT16_C( 10809), -INT16_C( 28510),  INT16_C(  4068),  INT16_C(  7097), -INT16_C(  3592),  INT16_C( 12449) },
      UINT32_C(2123752124) },
    { { -INT16_C( 30229), -INT16_C( 16589), -INT16_C( 25713), -INT16_C( 24888), -INT16_C(  4462), -INT16_C(  3123), -INT16_C( 25052), -INT16_C( 12877),
         INT16_C( 19699), -INT16_C( 17575), -INT16_C(  1247),  INT16_C(  1611),  INT16_C(  1035),  INT16_C(   801), -INT16_C( 15627), -INT16_C(  7885),
         INT16_C( 26444), -INT16_C(  9312),  INT16_C( 26626), -INT16_C( 27527),  INT16_C( 18007),  INT16_C( 31623),  INT16_C( 15076), -INT16_C( 10168),
        -INT16_C( 24185), -INT16_C( 22381), -INT16_C(  8547), -INT16_C( 22354), -INT16_C( 12318), -INT16_C( 10325), -INT16_C(  8558), -INT16_C(  8520) },
      {  INT16_C( 22853),  INT16_C( 18617),  INT16_C( 13249),  INT16_C(  6364),  INT16_C( 25721),  INT16_C( 24212), -INT16_C(  9058),  INT16_C(  9526),
        -INT16_C( 13954),  INT16_C(  7118),  INT16_C( 31911), -INT16_C( 30269),  INT16_C( 28236), -INT16_C(  8608),  INT16_C(  6476), -INT16_C( 27972),
         INT16_C( 30066),  INT16_C( 13274), -INT16_C( 18776),  INT16_C(  8780), -INT16_C(  8166), -INT16_C( 18048), -INT16_C( 18756),  INT16_C( 15070),
        -INT16_C( 21377),  INT16_C(  9813),  INT16_C(  6185),  INT16_C( 30127),  INT16_C(  3974), -INT16_C( 11437),  INT16_C(  3880), -INT16_C( 26011) },
      UINT32_C(2692000000) },
    { {  INT16_C( 16260),  INT16_C( 11726),  INT16_C(  6901),  INT16_C(  4175), -INT16_C( 12294), -INT16_C( 18743), -INT16_C( 22651),  INT16_C(  1265),
         INT16_C( 18004),  INT16_C( 32042), -INT16_C(  9889), -INT16_C(  6670),  INT16_C( 17896),  INT16_C(  4536),  INT16_C(  7508), -INT16_C( 10069),
         INT16_C( 31068),  INT16_C( 20997),  INT16_C( 21651), -INT16_C( 29342),  INT16_C( 11043), -INT16_C( 22460),  INT16_C( 13778),  INT16_C(  9900),
        -INT16_C( 10629), -INT16_C(  9565), -INT16_C( 27217), -INT16_C( 26432),  INT16_C( 30938),  INT16_C( 11945),  INT16_C( 21654), -INT16_C(  3577) },
      {  INT16_C(  3278),  INT16_C( 24900), -INT16_C( 22943), -INT16_C( 31505),  INT16_C( 13265), -INT16_C( 23507), -INT16_C(  9880), -INT16_C(  7222),
         INT16_C( 28336),  INT16_C( 24510),  INT16_C( 32259), -INT16_C(  8457), -INT16_C( 24330), -INT16_C( 29684),  INT16_C(  5109), -INT16_C( 15489),
        -INT16_C( 15584), -INT16_C( 32476),  INT16_C(  4970),  INT16_C( 15109),  INT16_C( 12870), -INT16_C( 20769), -INT16_C( 22004), -INT16_C( 17262),
         INT16_C( 20504),  INT16_C(  6939),  INT16_C(  5070), -INT16_C( 15111),  INT16_C(  1715), -INT16_C( 22447), -INT16_C( 12263),  INT16_C( 14699) },
      UINT32_C(1892154029) },
    { { -INT16_C( 28525), -INT16_C(   582), -INT16_C( 16221), -INT16_C(  5575),  INT16_C(  6386), -INT16_C(   360),  INT16_C( 10946), -INT16_C(  9542),
        -INT16_C( 10630),  INT16_C( 18678), -INT16_C(  4119), -INT16_C( 25587),  INT16_C( 24309),  INT16_C(  3909), -INT16_C( 20434), -INT16_C( 16056),
         INT16_C(   832), -INT16_C(  6977), -INT16_C(  1853), -INT16_C( 18994),  INT16_C( 26128), -INT16_C( 11340),  INT16_C( 28305),  INT16_C(  2989),
        -INT16_C( 23740),  INT16_C( 11604),  INT16_C( 24979), -INT16_C( 30518),  INT16_C(  4031), -INT16_C(  4713), -INT16_C(  8001),  INT16_C(   174) },
      {  INT16_C( 28131), -INT16_C( 22812), -INT16_C( 19867),  INT16_C( 30299),  INT16_C(  3864), -INT16_C( 22199), -INT16_C(  2434), -INT16_C( 15691),
         INT16_C(  2458),  INT16_C( 11760), -INT16_C( 17814),  INT16_C( 10677),  INT16_C( 19913), -INT16_C( 30698), -INT16_C( 15315),  INT16_C(  4232),
         INT16_C( 27698), -INT16_C( 26698),  INT16_C(  4382),  INT16_C( 14093),  INT16_C( 22049), -INT16_C( 24608), -INT16_C( 27315), -INT16_C(  6303),
         INT16_C( 20894),  INT16_C(  2068), -INT16_C( 14069), -INT16_C( 11215),  INT16_C( 18198),  INT16_C( 17245), -INT16_C(  6900),  INT16_C( 15955) },
      UINT32_C( 116537078) },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m512i a = simde_mm512_loadu_epi16(test_vec[i].a);
    simde__m512i b = simde_mm512_loadu_epi16(test_vec[i].b);
    simde__mmask32 r = simde_mm512_cmpgt_epi16_mask(a, b);
    simde_assert_equal_mmask32(r, test_vec[i].r);
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde__m512i a = simde_test_x86_random_i16x32();
    simde__m512i b = simde_test_x86_random_i16x32();
    simde__mmask32 r = simde_mm512_cmpgt_epi16_mask(a, b);

    simde_test_x86_write_i16x32(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_x86_write_i16x32(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_mmask32(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_mm512_cmpgt_epi32_mask(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m512i a;
    simde__m512i b;
    simde__mmask16 r;
  } test_vec[8] = {
    { simde_mm512_set_epi32(INT32_C( -126651070), INT32_C( 1757388710), INT32_C(  617530196), INT32_C(  407807901),
                            INT32_C( 1271989524), INT32_C( 1251214807), INT32_C(-1247045111), INT32_C(-1024057759),
                            INT32_C(   50729453), INT32_C(  464444874), INT32_C( 1840702207), INT32_C( 1916050591),
                            INT32_C(  484601458), INT32_C( -782065931), INT32_C(-1485735658), INT32_C(-1326388993)),
      simde_mm512_set_epi32(INT32_C(  111072774), INT32_C( 1757388710), INT32_C( 1496897687), INT32_C(  407807901),
                            INT32_C( 1271989524), INT32_C( 1496985365), INT32_C(-1247045111), INT32_C(-1225014979),
                            INT32_C(   50729453), INT32_C(  464444874), INT32_C(  924537351), INT32_C( 1916050591),
                            INT32_C(  484601458), INT32_C( -782065931), INT32_C(-1485735658), INT32_C(-1326388993)),
      UINT16_C(  288) },
    { simde_mm512_set_epi32(INT32_C( 2106044062), INT32_C( 1752498924), INT32_C(-1086695378), INT32_C(  627787891),
                            INT32_C(-1783053554), INT32_C(-1485517848), INT32_C( 1105114322), INT32_C(-1862707588),
                            INT32_C(  823946037), INT32_C(-2030244995), INT32_C( -219180660), INT32_C(  810910725),
                            INT32_C( -642105946), INT32_C(  760774613), INT32_C(  -62603432), INT32_C(-2064446807)),
      simde_mm512_set_epi32(INT32_C( 2106044062), INT32_C( 1752498924), INT32_C( -582421212), INT32_C( 1649238471),
                            INT32_C( 1446053889), INT32_C(-1485517848), INT32_C( 1105114322), INT32_C(-1862707588),
                            INT32_C( -846383385), INT32_C(-2030244995), INT32_C( -905258415), INT32_C(  810910725),
                            INT32_C(-1668595380), INT32_C( -760772652), INT32_C( 2145797270), INT32_C(   57887151)),
      UINT16_C(  172) },
    { simde_mm512_set_epi32(INT32_C(  948728954), INT32_C(  965445469), INT32_C( -298261731), INT32_C( 1889741023),
                            INT32_C(  101476677), INT32_C( -598834633), INT32_C( 1592735604), INT32_C(  428243294),
                            INT32_C(-2001034764), INT32_C( -639043872), INT32_C(  567427880), INT32_C(-1305749494),
                            INT32_C( -204185535), INT32_C( -550643286), INT32_C( -170363385), INT32_C( 1483518213)),
      simde_mm512_set_epi32(INT32_C(  948728954), INT32_C(  965445469), INT32_C(  364841947), INT32_C(-1221758106),
                            INT32_C(  101476677), INT32_C( -598834633), INT32_C( 1592735604), INT32_C(-1456245493),
                            INT32_C(-2001034764), INT32_C( -639043872), INT32_C(  567427880), INT32_C(-1305749494),
                            INT32_C( -204185535), INT32_C(  830345587), INT32_C( -170363385), INT32_C( -603563929)),
      UINT16_C( 4353) },
    { simde_mm512_set_epi32(INT32_C( -163413000), INT32_C( -831194762), INT32_C( -664019578), INT32_C( 2031024026),
                            INT32_C( 1912388774), INT32_C(  982200166), INT32_C(  596130243), INT32_C(  446035443),
                            INT32_C( 1373006598), INT32_C(-1540837035), INT32_C( 1581631435), INT32_C(-2083299381),
                            INT32_C( 1992847454), INT32_C(  448258110), INT32_C(  875345838), INT32_C( 1612926819)),
      simde_mm512_set_epi32(INT32_C(   81573630), INT32_C( -831194762), INT32_C( -664019578), INT32_C( 2031024026),
                            INT32_C( 1912388774), INT32_C(-2072470454), INT32_C(  596130243), INT32_C( 1961646011),
                            INT32_C( 1373006598), INT32_C( -197223193), INT32_C( 1581631435), INT32_C(-2083299381),
                            INT32_C( 1457480410), INT32_C( 1181119535), INT32_C( 1263228451), INT32_C(-1998542716)),
      UINT16_C( 1033) },
    { simde_mm512_set_epi32(INT32_C( 1436278246), INT32_C(   99684976), INT32_C( 1345577484), INT32_C(  166701508),
                            INT32_C( -780731111), INT32_C( -840749601), INT32_C( 1523342039), INT32_C( 1058674665),
                            INT32_C( -523908416), INT32_C( 1659465207), INT32_C(-1927062215), INT32_C(-1156760340),
                            INT32_C(  715569317), INT32_C(-1515814414), INT32_C( 1243253180), INT32_C( 2080215882)),
      simde_mm512_set_epi32(INT32_C(  432908742), INT32_C(   99684976), INT32_C(  -14330157), INT32_C(-1223154556),
                            INT32_C( -780731111), INT32_C(  696697372), INT32_C( 1523342039), INT32_C( 1058674665),
                            INT32_C( -523908416), INT32_C( 1659465207), INT32_C(-1927062215), INT32_C(-1156760340),
                            INT32_C( -171262349), INT32_C(-1515814414), INT32_C(-1234169573), INT32_C(-1847568101)),
      UINT16_C(45067) },
    { simde_mm512_set_epi32(INT32_C( 1399825551), INT32_C(-1064541474), INT32_C( 2112452992), INT32_C(  575137303),
                            INT32_C( -979898374), INT32_C(-1476679333), INT32_C( 1320423852), INT32_C( 1767893242),
                            INT32_C( -389599783), INT32_C(-1459729991), INT32_C(  995424065), INT32_C( -522129019),
                            INT32_C( -466751981), INT32_C( 1371238810), INT32_C( 1006677155), INT32_C( 1609037982)),
      simde_mm512_set_epi32(INT32_C( 1399825551), INT32_C(-1064541474), INT32_C( 2112452992), INT32_C(  134645750),
                            INT32_C(  500192289), INT32_C( 1600988950), INT32_C( 1320423852), INT32_C( 1198845893),
                            INT32_C( -389599783), INT32_C( 1504468794), INT32_C(  995424065), INT32_C(-2123865443),
                            INT32_C( -466751981), INT32_C(-1711282630), INT32_C( 1006677155), INT32_C( 1609037982)),
      UINT16_C( 4372) },
    { simde_mm512_set_epi32(INT32_C(-1862774816), INT32_C(   28374488), INT32_C(  250156705), INT32_C( -932694837),
                            INT32_C(-2079251566), INT32_C( -246439183), INT32_C( -875109534), INT32_C( 1740046060),
                            INT32_C( 1735819269), INT32_C( 1371885292), INT32_C( -914870851), INT32_C( -473073032),
                            INT32_C( -580976455), INT32_C( 1688786028), INT32_C(  637430498), INT32_C(-1740972685)),
      simde_mm512_set_epi32(INT32_C(-1862774816), INT32_C(   28374488), INT32_C(  580744870), INT32_C( -666445473),
                            INT32_C( -129274908), INT32_C( -928751425), INT32_C( -388443661), INT32_C( 1740046060),
                            INT32_C(-1909361652), INT32_C( 1371885292), INT32_C(  857928163), INT32_C(   37075976),
                            INT32_C( -580976455), INT32_C(-1545948444), INT32_C(  637430498), INT32_C(-1740972685)),
      UINT16_C( 1156) },
    { simde_mm512_set_epi32(INT32_C(-1890406982), INT32_C( 2110791016), INT32_C( 1083476771), INT32_C( -620691621),
                            INT32_C(  543588207), INT32_C( -227503647), INT32_C( -759273149), INT32_C(  775085710),
                            INT32_C( 1404885802), INT32_C(-1395233065), INT32_C(  832528180), INT32_C( 1065959566),
                            INT32_C(-2083201484), INT32_C(  937916550), INT32_C( -710457746), INT32_C( -246147415)),
      simde_mm512_set_epi32(INT32_C(   84669207), INT32_C(  470641840), INT32_C( 1083476771), INT32_C( -620691621),
                            INT32_C( 1099959895), INT32_C( -961354454), INT32_C(-1751384146), INT32_C(  775085710),
                            INT32_C( 1075765582), INT32_C(  834655006), INT32_C(  832528180), INT32_C( 1065959566),
                            INT32_C(  954342416), INT32_C(  937916550), INT32_C(-1946395018), INT32_C(  757651617)),
      UINT16_C(18050) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__mmask16 r = simde_mm512_cmpgt_epi32_mask(test_vec[i].a, test_vec[i].b);
    simde_assert_equal_mmask16(r, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm512_mask_cmpgt_epi32_mask(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__mmask16 k;
    simde__m512i a;
    simde__m512i b;
    simde__mmask16 r;
  } test_vec[8] = {
       { UINT16_C(12249),
      simde_mm512_set_epi32(INT32_C(-1151856667), INT32_C(  -49918748), INT32_C(-1709830250), INT32_C( 1750293451),
                            INT32_C(-1728641738), INT32_C(   79295022), INT32_C(  308064941), INT32_C( 1216157597),
                            INT32_C(  320231148), INT32_C( -697875804), INT32_C(  990066955), INT32_C(-2091005609),
                            INT32_C( 1037816180), INT32_C( -748290940), INT32_C( 1166526776), INT32_C(-1428331975)),
      simde_mm512_set_epi32(INT32_C( 1846695950), INT32_C(  884046092), INT32_C( -392734818), INT32_C(-1618937497),
                            INT32_C(  670851975), INT32_C(-1269946840), INT32_C(-1917256160), INT32_C(  228203505),
                            INT32_C( 1263965918), INT32_C(-2053175323), INT32_C(-1206891799), INT32_C( -371464947),
                            INT32_C(  -99745007), INT32_C( -847464628), INT32_C(  -93605380), INT32_C(-1859612096)),
      UINT16_C( 1865) },
    { UINT16_C(47912),
      simde_mm512_set_epi32(INT32_C(  238725197), INT32_C( 1521340392), INT32_C(-2077410041), INT32_C( 2110592657),
                            INT32_C(  630925822), INT32_C(  689275449), INT32_C(-1970822997), INT32_C(-1836727953),
                            INT32_C(  237271984), INT32_C( -578417637), INT32_C( -768235708), INT32_C( 1362514984),
                            INT32_C( 2019276284), INT32_C(-1411239380), INT32_C( 2052618114), INT32_C(-1238213534)),
      simde_mm512_set_epi32(INT32_C( -669654436), INT32_C( -822780196), INT32_C(  205688995), INT32_C( 1680146061),
                            INT32_C(  393599682), INT32_C(-1451941808), INT32_C(  947305201), INT32_C(  -75999449),
                            INT32_C( -484166756), INT32_C(  833555969), INT32_C( -549302423), INT32_C( 1610578173),
                            INT32_C(-2070337581), INT32_C(  664412106), INT32_C(  255732930), INT32_C( 1319359183)),
      UINT16_C(38920) },
    { UINT16_C(35968),
      simde_mm512_set_epi32(INT32_C( -359339347), INT32_C( -666198998), INT32_C(  830421084), INT32_C(-2087460228),
                            INT32_C(-1475104408), INT32_C(  721289147), INT32_C( 1281161083), INT32_C(  852871551),
                            INT32_C(-1589170839), INT32_C( -746357372), INT32_C( -154169474), INT32_C( -148954645),
                            INT32_C(-1357418925), INT32_C(-2112116028), INT32_C(  174617048), INT32_C(   -4103177)),
      simde_mm512_set_epi32(INT32_C( -871886017), INT32_C(-1688556984), INT32_C(  524690471), INT32_C( -124192434),
                            INT32_C( 1423100629), INT32_C( -161239972), INT32_C( -396308843), INT32_C( 1070701282),
                            INT32_C(-1826016016), INT32_C(  425347357), INT32_C(  366897524), INT32_C( -401692546),
                            INT32_C( -812557761), INT32_C( 1614519786), INT32_C(-1648390428), INT32_C( 1830061179)),
      UINT16_C(33920) },
    { UINT16_C(16809),
      simde_mm512_set_epi32(INT32_C(-1280324837), INT32_C( -161347329), INT32_C(  735858798), INT32_C( -674499230),
                            INT32_C(  -21391979), INT32_C( -381504266), INT32_C( 1528317100), INT32_C(  430345703),
                            INT32_C( -679679907), INT32_C(  515475896), INT32_C( -731085275), INT32_C( 1308429395),
                            INT32_C(  582932299), INT32_C(  489160586), INT32_C( 1760701165), INT32_C(  118948129)),
      simde_mm512_set_epi32(INT32_C( 1240889055), INT32_C(  888122014), INT32_C(-1469013917), INT32_C( 1209972337),
                            INT32_C( -691361230), INT32_C(  361393556), INT32_C(-1167116782), INT32_C( 1467757879),
                            INT32_C( 2124803699), INT32_C( -154870634), INT32_C(-1603618479), INT32_C(-2032203238),
                            INT32_C( 2111773805), INT32_C( -496949166), INT32_C( 1844580247), INT32_C(-2053814402)),
      UINT16_C(   33) },
    { UINT16_C(44464),
      simde_mm512_set_epi32(INT32_C( 1072149321), INT32_C( 1813169024), INT32_C(-1284365076), INT32_C(-1623700182),
                            INT32_C(  530512850), INT32_C(  116537892), INT32_C(  258206492), INT32_C(  690441736),
                            INT32_C( 1005371642), INT32_C( 1116924342), INT32_C( 1297564984), INT32_C( -835039581),
                            INT32_C( 1286263864), INT32_C(-1749149234), INT32_C(  558298824), INT32_C( 1064688827)),
      simde_mm512_set_epi32(INT32_C( 1323805616), INT32_C(-1558886902), INT32_C( 1778691088), INT32_C(  108147743),
                            INT32_C( 1106435712), INT32_C( -967535450), INT32_C(  600280311), INT32_C(  109364043),
                            INT32_C(  423389578), INT32_C( 1225761441), INT32_C( -440804681), INT32_C( -707540326),
                            INT32_C(-1898655855), INT32_C(-1268681648), INT32_C(-1360056367), INT32_C( -275254487)),
      UINT16_C( 1440) },
    { UINT16_C(23993),
      simde_mm512_set_epi32(INT32_C(-2038065128), INT32_C( -446679229), INT32_C(   78082001), INT32_C(  379830516),
                            INT32_C(-1929569644), INT32_C( 1595859976), INT32_C(  320798226), INT32_C( -738570818),
                            INT32_C( -165441023), INT32_C( -172594873), INT32_C(  912601062), INT32_C(  -56802863),
                            INT32_C(  503255814), INT32_C( 2046199592), INT32_C( -622599746), INT32_C( 1337235103)),
      simde_mm512_set_epi32(INT32_C(-1519343201), INT32_C( -448055921), INT32_C(-1909251875), INT32_C( -347447915),
                            INT32_C(  397553753), INT32_C(  713040821), INT32_C(-1458903601), INT32_C(  -45886582),
                            INT32_C( 1230465483), INT32_C( -828483015), INT32_C( -699493978), INT32_C(-1811052070),
                            INT32_C( 1577065087), INT32_C( -109599940), INT32_C(-1093577090), INT32_C(-1788879767)),
      UINT16_C(21553) },
    { UINT16_C(10358),
      simde_mm512_set_epi32(INT32_C(  648390363), INT32_C(  -30837841), INT32_C(-1635592815), INT32_C( -694389961),
                            INT32_C( -883952626), INT32_C( -761345991), INT32_C(  346040825), INT32_C(-1780780575),
                            INT32_C( 1510717568), INT32_C(-1185143236), INT32_C( 2143540932), INT32_C(  880567806),
                            INT32_C(-1670993371), INT32_C(-1942419167), INT32_C(-1196759463), INT32_C( 1386099146)),
      simde_mm512_set_epi32(INT32_C(-1614031176), INT32_C(  414071648), INT32_C(-1152911954), INT32_C(  424701353),
                            INT32_C( 1739922394), INT32_C( -506382165), INT32_C(  257126844), INT32_C( 1724223193),
                            INT32_C( 1096709845), INT32_C(-1643231112), INT32_C(-1639890652), INT32_C( -403971200),
                            INT32_C( 1318667734), INT32_C(  206062573), INT32_C(  -18472190), INT32_C(   -1701112)),
      UINT16_C(  112) },
    { UINT16_C(35023),
      simde_mm512_set_epi32(INT32_C(  228305355), INT32_C(-1904004735), INT32_C(  118523411), INT32_C( 1661507666),
                            INT32_C(-1400326500), INT32_C(   63010183), INT32_C(   62197704), INT32_C( -635599967),
                            INT32_C( 1677709284), INT32_C(-1294080152), INT32_C( -900737233), INT32_C(-1991940005),
                            INT32_C( -240404149), INT32_C(-1448242105), INT32_C(-1972665039), INT32_C( 1511694245)),
      simde_mm512_set_epi32(INT32_C(-1506289043), INT32_C(   82234507), INT32_C( -557930538), INT32_C( -911612825),
                            INT32_C( 1352158017), INT32_C( -554125937), INT32_C( -727289650), INT32_C(-1102664191),
                            INT32_C( 1941639559), INT32_C(-2124299952), INT32_C( -385431179), INT32_C(  112242864),
                            INT32_C(  -66697069), INT32_C( 1379403470), INT32_C(-1996504296), INT32_C(  658235880)),
      UINT16_C(32835) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__mmask16 r = simde_mm512_mask_cmpgt_epi32_mask(test_vec[i].k, test_vec[i].a, test_vec[i].b);
    simde_assert_equal_mmask16(r, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm512_cmpgt_epi64_mask(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m512i a;
    simde__m512i b;
    simde__mmask8 r;
  } test_vec[8] = {
    { simde_mm512_set_epi64(INT64_C(-3344943500899736927), INT64_C( -508674271294480923),
                            INT64_C( 4367550852745697236), INT64_C(-1765523250257788813),
                            INT64_C(-6325172456788566604), INT64_C( 3340966423446181237),
                            INT64_C( 4899669249714194025), INT64_C(-3109134868060088778)),
      simde_mm512_set_epi64(INT64_C(-3344943500899736927), INT64_C( -115747659216396604),
                            INT64_C( 7173930031566073597), INT64_C(-1765523250257788813),
                            INT64_C(-4525526016698522721), INT64_C( 3340966423446181237),
                            INT64_C( 4899669249714194025), INT64_C(-3109134868060088778)),
      UINT8_C(  0) },
    { simde_mm512_set_epi64(INT64_C(  161300839730502102), INT64_C(-4154011080047619988),
                            INT64_C( 3510183776865199207), INT64_C( 5188039415407364902),
                            INT64_C(-8649541106015277925), INT64_C( 2036065042708484429),
                            INT64_C(-7714656548902029220), INT64_C(-9105101012109136347)),
      simde_mm512_set_epi64(INT64_C(  161300839730502102), INT64_C(-4154011080047619988),
                            INT64_C( 6120426103009778754), INT64_C( -248023738166197182),
                            INT64_C(-8649541106015277925), INT64_C( 2693047687180833180),
                            INT64_C(-7714656548902029220), INT64_C(-9105101012109136347)),
      UINT8_C( 16) },
    { simde_mm512_set_epi64(INT64_C(-2825253727352691686), INT64_C( 4405965118825132522),
                            INT64_C(-6791426899562410985), INT64_C(-4409900925389880930),
                            INT64_C( 1845845856613597884), INT64_C(-4842241423465696621),
                            INT64_C(  163081221433998591), INT64_C( 4482804709675222173)),
      simde_mm512_set_epi64(INT64_C( 3285810068291760082), INT64_C( 4405965118825132522),
                            INT64_C(-6791426899562410985), INT64_C(-4943963491966669187),
                            INT64_C( 1845845856613597884), INT64_C( 7384036385676540465),
                            INT64_C(-7313503223753260102), INT64_C( 5128036791088991318)),
      UINT8_C( 18) },
    { simde_mm512_set_epi64(INT64_C(-1633105180711142836), INT64_C(-4287337651200520652),
                            INT64_C( 8346707004388378871), INT64_C(-5848595418894109542),
                            INT64_C(-7300386321370732776), INT64_C( -648586863376006844),
                            INT64_C(-3473939784680689044), INT64_C(-1628617817613399979)),
      simde_mm512_set_epi64(INT64_C( 1934898870952452550), INT64_C(-4287337651200520652),
                            INT64_C( 1557479703737443505), INT64_C(-5848595418894109542),
                            INT64_C(-7179299072208562799), INT64_C( -648586863376006844),
                            INT64_C(-3473939784680689044), INT64_C( 2817575692173645704)),
      UINT8_C( 32) },
    { simde_mm512_set_epi64(INT64_C(-8952123954418726140), INT64_C( 5461301954902244462),
                            INT64_C(-5820184907423972656), INT64_C(  420402622060248705),
                            INT64_C(-1664441445637860283), INT64_C(-9088734991256809986),
                            INT64_C( 5606803261787264235), INT64_C( 3392608019150722653)),
      simde_mm512_set_epi64(INT64_C(-8952123954418726140), INT64_C(-6318099565586317695),
                            INT64_C(-5820184907423972656), INT64_C(  420402622060248705),
                            INT64_C(-1664441445637860283), INT64_C( 6565206217411025613),
                            INT64_C( 8598198622090956400), INT64_C(-7576266643160730964)),
      UINT8_C( 65) },
    { simde_mm512_set_epi64(INT64_C(-3313522622815895345), INT64_C(-6452175545498154090),
                            INT64_C( -937049212555566038), INT64_C(-4143019958444030865),
                            INT64_C(-3410665359562609619), INT64_C(  966786109195223540),
                            INT64_C( 7283097367839393163), INT64_C(-2640534975929709368)),
      simde_mm512_set_epi64(INT64_C(-3313522622815895345), INT64_C(-6452175545498154090),
                            INT64_C( 7057508826094118763), INT64_C(-2466255848420720587),
                            INT64_C(-3410665359562609619), INT64_C(-7091282311083875172),
                            INT64_C(-5778676633446214654), INT64_C(-2640534975929709368)),
      UINT8_C(  6) },
    { simde_mm512_set_epi64(INT64_C( 7946101066156420330), INT64_C(-1199223599247032864),
                            INT64_C(-1997073553979895023), INT64_C(-2305098272308636911),
                            INT64_C( -630363562210498119), INT64_C( 4426020973322885294),
                            INT64_C( 8782098874831326668), INT64_C(-6058337867533474769)),
      simde_mm512_set_epi64(INT64_C( 7946101066156420330), INT64_C(-1199223599247032864),
                            INT64_C(-1997073553979895023), INT64_C(-2305098272308636911),
                            INT64_C( -630363562210498119), INT64_C( 8629524505567702841),
                            INT64_C( 8782098874831326668), INT64_C( 2660246489815857132)),
      UINT8_C(  0) },
    { simde_mm512_set_epi64(INT64_C(-2815932903868980343), INT64_C(  791308056982133256),
                            INT64_C( 8277712790583824674), INT64_C(-3943050990178000322),
                            INT64_C(-2127265598488665647), INT64_C( 4379715049649431166),
                            INT64_C(-9154071905230416728), INT64_C(-2123362159730266714)),
      simde_mm512_set_epi64(INT64_C(-2815932903868980343), INT64_C(  791308056982133256),
                            INT64_C(-6685750631550937327), INT64_C( 1585978438239301211),
                            INT64_C( 3432556139556266760), INT64_C( 4379715049649431166),
                            INT64_C(-9154071905230416728), INT64_C(-1483875325616410698)),
      UINT8_C( 32) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__mmask8 r = simde_mm512_cmpgt_epi64_mask(test_vec[i].a, test_vec[i].b);
    simde_assert_equal_mmask8(r, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm512_mask_cmpgt_epi64_mask(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__mmask8 k;
    simde__m512i a;
    simde__m512i b;
    simde__mmask8 r;
  } test_vec[8] = {
    { UINT8_C( 16),
      simde_mm512_set_epi64(INT64_C( 2255026789087372129), INT64_C( 6954636019969939696),
                            INT64_C( 8135587588110756767), INT64_C(-6775895683000468083),
                            INT64_C( -900701109459786534), INT64_C(-7915280239032503360),
                            INT64_C(-1216817989725562739), INT64_C(-8432176550710264558)),
      simde_mm512_set_epi64(INT64_C( 2255026789087372129), INT64_C( 6954636019969939696),
                            INT64_C( 8135587588110756767), INT64_C(-6775895683000468083),
                            INT64_C( -900701109459786534), INT64_C(-3598046066747317833),
                            INT64_C(-1709941778912207388), INT64_C( 3169788859761289772)),
      UINT8_C(  0) },
    { UINT8_C(  6),
      simde_mm512_set_epi64(INT64_C(-2239217399172416071), INT64_C(-1788368623206610532),
                            INT64_C(-8621353419023287056), INT64_C( 2167646577764527484),
                            INT64_C( 7373916114077140533), INT64_C( 4679914315089846813),
                            INT64_C(-4785189148228967071), INT64_C(-2291884851836211058)),
      simde_mm512_set_epi64(INT64_C(-4674113889822188979), INT64_C( 6851357122574510655),
                            INT64_C(-8621353419023287056), INT64_C( 2167646577764527484),
                            INT64_C( 7373916114077140533), INT64_C(-2091630176064440564),
                            INT64_C(-4166997073722787613), INT64_C(-2291884851836211058)),
      UINT8_C(  4) },
    { UINT8_C(231),
      simde_mm512_set_epi64(INT64_C( -437845083503418422), INT64_C( 7030863114044209442),
                            INT64_C( 8238064857893579595), INT64_C( 3062172269146343786),
                            INT64_C( 7457006241836305381), INT64_C(-9078752323516671886),
                            INT64_C(-6382075143273833301), INT64_C( 3840898770164583597)),
      simde_mm512_set_epi64(INT64_C(-4268408126209392137), INT64_C( 7030863114044209442),
                            INT64_C(  663353489862938549), INT64_C( 3062172269146343786),
                            INT64_C( 7457006241836305381), INT64_C( 8174310593560152615),
                            INT64_C(-6382075143273833301), INT64_C(-4495103935185291795)),
      UINT8_C(161) },
    { UINT8_C( 60),
      simde_mm512_set_epi64(INT64_C( 3543184366849060052), INT64_C( 8101296544771348510),
                            INT64_C( 1359772700119148960), INT64_C(-8357828074665392254),
                            INT64_C(-5672294839872616078), INT64_C(-2918525673450782654),
                            INT64_C(-6303315662009814438), INT64_C( 4773615511108508590)),
      simde_mm512_set_epi64(INT64_C( 3543184366849060052), INT64_C(  286276641590586651),
                            INT64_C( 1359772700119148960), INT64_C(-3217204137928962858),
                            INT64_C(-5672294839872616078), INT64_C(-2918525673450782654),
                            INT64_C(-2554453706959743566), INT64_C(-6197005744039272430)),
      UINT8_C(  0) },
    { UINT8_C( 97),
      simde_mm512_set_epi64(INT64_C(-4278296701436995238), INT64_C( 3569507405853529045),
                            INT64_C(-3380367559374400304), INT64_C(-4948363566435325304),
                            INT64_C(-6678298576976263631), INT64_C( 8848650777417470336),
                            INT64_C( 6320411494008491541), INT64_C( 2280208700508329072)),
      simde_mm512_set_epi64(INT64_C(  326944370261152484), INT64_C( 3569507405853529045),
                            INT64_C(  715678757448860576), INT64_C(-4948363566435325304),
                            INT64_C(-6678298576976263631), INT64_C(-5367013526541491012),
                            INT64_C( 1008601224594483315), INT64_C( 2280208700508329072)),
      UINT8_C(  0) },
    { UINT8_C(153),
      simde_mm512_set_epi64(INT64_C( 8361426666750729591), INT64_C(-6668359429543518025),
                            INT64_C( 2952092805333509636), INT64_C( 8284871946243647248),
                            INT64_C(-8896262213455925533), INT64_C( 3194469353298560173),
                            INT64_C( 5466230282228711049), INT64_C(-1091365868294702661)),
      simde_mm512_set_epi64(INT64_C(-8667260419906723988), INT64_C(-6668359429543518025),
                            INT64_C( 2952092805333509636), INT64_C( 8284871946243647248),
                            INT64_C( 3185065043241333471), INT64_C( -134870333477219304),
                            INT64_C( 5466230282228711049), INT64_C(-4571723861926798973)),
      UINT8_C(129) },
    { UINT8_C( 60),
      simde_mm512_set_epi64(INT64_C(-5632979726637184794), INT64_C( 3790754159972080576),
                            INT64_C(-7842038005332057398), INT64_C(-1292705499011984897),
                            INT64_C( 7597886654367336733), INT64_C( 1457057381762531412),
                            INT64_C(-1572264173383359920), INT64_C(-8716209376375056305)),
      simde_mm512_set_epi64(INT64_C(-5632979726637184794), INT64_C( 3790754159972080576),
                            INT64_C( 1913605115921194336), INT64_C(-6143563121944184390),
                            INT64_C( 7597886654367336733), INT64_C( 1457057381762531412),
                            INT64_C( 7253226870637562008), INT64_C(-6283001429373579825)),
      UINT8_C( 16) },
    { UINT8_C( 88),
      simde_mm512_set_epi64(INT64_C(-2374777447002601129), INT64_C(-5785141086360428669),
                            INT64_C( 6450311718709789609), INT64_C( 4609381622161693926),
                            INT64_C( -638886780002324864), INT64_C(-5739159461288227194),
                            INT64_C(-4392084870376418631), INT64_C( 2798977638636065147)),
      simde_mm512_set_epi64(INT64_C(  753500986908300233), INT64_C(-5785141086360428669),
                            INT64_C( 6450311718709789609), INT64_C(-4648819914956469219),
                            INT64_C(-8767820380557260648), INT64_C(-5739159461288227194),
                            INT64_C( 2360822030941279123), INT64_C(-6092063218708168180)),
      UINT8_C( 24) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__mmask8 r = simde_mm512_mask_cmpgt_epi64_mask(test_vec[i].k, test_vec[i].a, test_vec[i].b);
    simde_assert_equal_mmask8(r, test_vec[i].r);
  }

  return 0;
}

SIMDE_TEST_FUNC_LIST_BEGIN
  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_cmpgt_epi8_mask)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_cmpgt_epu8_mask)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_cmpgt_epi16_mask)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_cmpgt_epi32_mask)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_cmpgt_epi32_mask)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_cmpgt_epi64_mask)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_cmpgt_epi64_mask)
SIMDE_TEST_FUNC_LIST_END

#include <test/x86/avx512/test-avx512-footer.h>
